class Solution {
    public void merge(int[] nums1, int m, int[] nums2, int n) {
        /*for(int idx = 0; idx < n; idx++) {
            nums1[m + idx] = nums2[idx];
        }
        Arrays.sort(nums1);*/


        /*int nums1Ptr = 0, nums2Ptr = 0;
        int sortedPtr = 0;
        int[] sortedArray = new int[m + n];

        while(nums1Ptr < m && nums2Ptr < n) {
            if(nums1[nums1Ptr] < nums2[nums2Ptr]) {
                sortedArray[sortedPtr++] = nums1[nums1Ptr++];
            } else {
                sortedArray[sortedPtr++] = nums2[nums2Ptr++];
            }
        }

        while(nums1Ptr < m) {
            sortedArray[sortedPtr++] = nums1[nums1Ptr++];
        }

        while(nums2Ptr < n) {
            sortedArray[sortedPtr++] = nums2[nums2Ptr++];
        }

        System.arraycopy(sortedArray, 0, nums1, 0, n + m);*/

        int nums1Ptr = m - 1, nums2Ptr = n - 1;
        int sortedPtr = n + m - 1;

        while(nums1Ptr >= 0 && nums2Ptr >= 0) {
            nums1[sortedPtr--] = (nums1[nums1Ptr] > nums2[nums2Ptr]) ? nums1[nums1Ptr--] :
            nums2[nums2Ptr--]; 
        }

        while(nums2Ptr >= 0) {
            nums1[sortedPtr--] = nums2[nums2Ptr--];
        }



    }
}